package queue

import (
	"base/common/funs"
	"base/common/queue/queueAbstruct"
	"base/common/queue/queueFactory"
	"errors"
)

// 选择队列压入任务
func Dispatch(obj *queueAbstruct.QueueObj) error {

	//获取配置文件内得驱动
	queueType := funs.Env("queue.type")

	switch queueType {
	case "redis":
		return new(queueFactory.RedisQueue).New(obj).MakeJson().Push()
	case "rabbitmq":
		return new(queueFactory.RabbitMqQueue).New(obj).MakeJson().Push()
	}

	return errors.New("队列类型不存在")
}

// 读取队列内容
func Consumer(key string, ch *chan string) {
	//获取配置文件内得驱动
	queueType := funs.Env("queue.type")

	obj := queueAbstruct.QueueObj{
		Name: key,
	}

	switch queueType {
	case "redis":
		new(queueFactory.RedisQueue).New(&obj).ReadList(ch)
	case "rabbitmq":
		new(queueFactory.RabbitMqQueue).New(&obj).ReadList(ch)
	default:
		panic("队列类型不存在")
	}

}
